Reactã®å®éšçããã¯experimental_useCacheãæ¢ããå®è£ ãå©ç¹ããããŠå¹æçãªããŒã¿ãã£ãã·ã¥æ¹æ³ãåŠã³ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸããã°ããŒãã«éçºè åãã§ãã
Reactã®experimental_useCacheãè§£æããïŒã°ããŒãã«éçºè åãç·åã¬ã€ã
Reactã®ãšã³ã·ã¹ãã ã¯åžžã«é²åããŠãããéçºè
äœéšãšã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããã®æ°æ©èœãæé©åã宿çã«å°å
¥ãããŠããŸãããã®ãããªå®éšçæ©èœã®äžã€ã§ããexperimental_useCacheã¯ãReactã³ã³ããŒãã³ãå
ã§ããŒã¿ããã£ãã·ã¥ããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãããã®ã¬ã€ãã§ã¯ãexperimental_useCacheã®å
æ¬çãªæŠèŠããã®å®è·µçãªå¿çšããããŠé«æ§èœã§ã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããäžã§ã®æå³ã«ã€ããŠè§£èª¬ããŸãã
çŸä»£ã®Webã¢ããªã±ãŒã·ã§ã³ã«ããããã£ãã·ã¥ã®å¿ èŠæ§ãçè§£ãã
仿¥ã®çžäºæ¥ç¶ãããäžçã§ã¯ããŠãŒã¶ãŒã¯å Žæãããã€ã¹ã«é¢ããããWebã¢ããªã±ãŒã·ã§ã³ãé«éã§å¿çæ§ãé«ããã·ãŒã ã¬ã¹ãªäœéšãæäŸããããšãæåŸ ããŠããŸãããŠãŒã¶ãŒäœéšã®äœäžã«å¯äžããéèŠãªèŠå ã¯ããã°ãã°é ãããŒã¿ååŸã§ãããããã¯ãŒã¯ã®é å»¶ããµãŒããŒã®å¿çæéãããŒã¿ååŸã®è€éããªã©ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãããã£ãã·ã¥ã¯ããããã®èª²é¡ã軜æžããããã®éèŠãªæŠç¥ãšããŠæµ®äžããŸãã
ãã£ãã·ã¥ãšã¯ãé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãããŒã«ã«ã«ãã¯ã©ã€ã¢ã³ãåŽïŒäŸïŒãã©ãŠã¶å ïŒãŸãã¯ãµãŒããŒåŽïŒäŸïŒRedisãMemcachedã®ãããªå°çšã®ãã£ãã·ã¥ãµãŒãã¹ïŒã«ä¿åããããšã§ãããŠãŒã¶ãŒãããŒã¿ããªã¯ãšã¹ããããšãã¢ããªã±ãŒã·ã§ã³ã¯ãŸããã£ãã·ã¥ã確èªããŸããããŒã¿ããã£ãã·ã¥ã§å©çšå¯èœãªå ŽåïŒããã£ãã·ã¥ããããïŒãããã¯å³åº§ã«ååŸãããå ã®ãœãŒã¹ïŒããŒã¿ããŒã¹ãAPIïŒããããŒã¿ãååŸããå¿ èŠæ§ãå€§å¹ ã«æžå°ããŸããããã¯ãããéãèªã¿èŸŒã¿æéã垯åå¹ äœ¿çšéã®åæžããããŠå šäœçã«ããè¯ããŠãŒã¶ãŒäœéšã«ã€ãªãããŸãã
ãã£ãã·ã¥ã¯ãã°ããŒãã«ãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠç¹ã«é¢é£æ§ãé«ãã§ããç°ãªãå°ççãªå Žæã«ãããŠãŒã¶ãŒã¯ãããŸããŸãªãããã¯ãŒã¯ç¶æ³ãçµéšããå¯èœæ§ããããŸãããŠãŒã¶ãŒã«è¿ãå Žæã§ããŒã¿ããã£ãã·ã¥ããããšã§ãã€ã³ã¿ãŒãããé床ãé ãããŸãã¯é å»¶ã倧ããå°åã®ãŠãŒã¶ãŒã®äœæããã©ãŒãã³ã¹ãåçã«åäžãããããšãã§ããŸããããããã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒãã°ããŒãã«ãªãŠã§ããµã€ãã«ãšã£ãŠéåžžã«éèŠãªçç±ã§ããCDNã¯éçã¢ã»ãããå°ççã«ãŠãŒã¶ãŒã®è¿ãã«ãã£ãã·ã¥ããŸããåæ§ã«ãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§é »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ããã£ãã·ã¥ããããšãããŠã§ããµã€ãã®åçãªéšåã§ãã£ãŠãããã®å¯Ÿè©±éšåã®äœæé床ãå€§å¹ ã«æ¹åããããšãã§ããŸãã
experimental_useCacheã®ç޹ä»ïŒReactã®ãã£ãã·ã³ã°ããã¯
experimental_useCacheã¯ã颿°ã³ã³ããŒãã³ãå
ã§ã®ãã£ãã·ã¥ã容æã«ããããã«èšèšãããReactããã¯ã§ããããã¯Reactã®å®éšçãªAPIã®äžéšã§ããã倿Žãããå¯èœæ§ããããããéçºè
ã¯å°æ¥ã®ãªãªãŒã¹ã§ã®æŽæ°ãä¿®æ£ã«åããå¿
èŠããããŸããããããå®éšçãªæ®µéã§ãã£ãŠããReactã®å°æ¥ã®ãã£ãã·ã¥æ©èœã«é¢ãã貎éãªæŽå¯ãæäŸããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããã®åŒ·åãªããŒã«ãæäŸããŸãã
ãã®æ žå¿ã«ãããŠãexperimental_useCacheã¯éåæé¢æ°ã®ããã®ã¡ã¢åã¡ã«ããºã ãæäŸããŸããããã«ãããéçºè
ã¯é«ã³ã¹ããªæäœïŒäŸïŒAPIããã®ããŒã¿ååŸãè€éãªèšç®ïŒã®çµæããã£ãã·ã¥ããåãå
¥åãæäŸãããå Žåã«ãã®çµæãåå©çšããŠã颿°ãåå®è¡ããããšãªã䜿çšã§ããŸããããã«ãããèšç®è² è·ã倧å¹
ã«åæžãããReactã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãåäžããŸãã
äž»ãªæ©èœãšå©ç¹
- éåæé¢æ°ã®ã¡ã¢åïŒ å ¥åãã©ã¡ãŒã¿ã«åºã¥ããŠéåæé¢æ°ã®çµæããã£ãã·ã¥ããAPIãžã®åé·ãªåŒã³åºããé«ã³ã¹ããªèšç®ãé²ããŸãã
- èªååæ€èšŒïŒ åæã®å®è£ ã«ã¯æç€ºçãªåæ€èšŒæ©èœã¯ãããŸããããä»ã®ãã£ãã·ã¥ã¡ã«ããºã ãšé£æºããŠåäœãããããšãã§ããŸããéçºè ã¯åæ€èšŒãã¿ãŒã³ãéçºããããšã奚å±ãããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒ ããŒã¿ã®ååŸãèšç®ã«ãããæéãççž®ããèªã¿èŸŒã¿æéã®ççž®ãšããã¹ã ãŒãºãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«ã€ãªãããŸãã
- ã³ãŒãã®ç°¡çŽ åïŒ ã³ã³ããŒãã³ãå ã®ãã£ãã·ã¥ããžãã¯ãç°¡çŽ åãããã€ã©ãŒãã¬ãŒãã³ãŒããåæžããã³ãŒãã®å¯èªæ§ãé«ããŸãã
- ãŠãŒã¶ãŒäœéšã®åäžïŒ ç¹ã«å€§éã®ããŒã¿ãè€éãªèšç®ãæ±ãã¢ããªã±ãŒã·ã§ã³ã«ãããŠãããå¿çæ§ãé«ãå¹ççãªãŠãŒã¶ãŒäœéšãæäŸããŸãã
experimental_useCacheã®ä»çµã¿ïŒè©³çŽ°è§£èª¬
experimental_useCacheããã¯ã¯ãåºæ¬çã«é¢æ°åŒã³åºãã®çµæãå
¥åããçæããããã£ãã·ã¥ããŒã«é¢é£ä»ããããšã§æ©èœããŸããåã颿°ãåãå
¥åã§åŒã³åºããããšãããã¯ã¯é¢æ°ãåå®è¡ãã代ããã«ãã£ãã·ã¥ãããçµæãååŸããŸããããã¯ã颿°ã®çµæããã£ãã·ã¥ããåãå
¥åãåã³çºçãããšãã«ãã£ãã·ã¥ãããçµæãè¿ãããšã«ãã£ãŠé¢æ°åŒã³åºããæé©åããææ³ã§ãããã¡ã¢åã®æŠå¿µã«äŒŒãŠããŸãã
ãã®ããã¯ã¯Reactã³ã³ããã¹ãå ã§äœ¿çšãããããšãæå³ããŠããŸãããã£ãã·ã¥ã¡ã«ããºã ãã¬ã³ããŒã©ã€ããµã€ã¯ã«ã«çµã³ã€ããŠãããããããã¯éèŠã§ããã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ããã»ã¹ã®é åå€ã§ã®äœ¿çšã¯æå³ãããŠããŸããããã®ã³ã³ããã¹ãã¯Reactã³ã³ããŒãã³ãèªäœã§ãã
ãã®ä»çµã¿ã¯éåžžãæ¬¡ã®ããã«å±éãããŸãã
- 颿°ã®å®çŸ©ïŒ éçºè
ã¯ãã£ãã·ã¥ããæäœãå®è¡ãã颿°ãå®çŸ©ããŸãããã®é¢æ°ã¯éåžžãéåæã§ãïŒäŸïŒAPIåŒã³åºãã«
async/awaitã䜿çšïŒã - ããã¯ã®åŒã³åºãïŒ Reactã®é¢æ°ã³ã³ããŒãã³ãå
ã§ã
experimental_useCacheããã¯ã颿°ãåŒæ°ãšããŠæž¡ããŠåŒã³åºãããŸãã - å ¥åãã©ã¡ãŒã¿ïŒ 颿°ãå ¥ååŒæ°ãšãšãã«åŒã³åºããããšããããã®åŒæ°ããã£ãã·ã¥ããŒã®çæã«äœ¿çšãããŸãã
- ãã£ãã·ã¥ã®æ€çŽ¢ïŒ ããã¯ã¯ãçæããããã£ãã·ã¥ããŒã«å¯Ÿå¿ãããã£ãã·ã¥ãããçµæãååšãããã©ããã確èªããŸãã
- ãã£ãã·ã¥ãããïŒ ãã£ãã·ã¥ãããçµæãèŠã€ãã£ãå Žåãããã¯å³åº§ã«è¿ãããŸãã颿°ã¯åå®è¡ãããŸããã
- ãã£ãã·ã¥ãã¹ïŒ ãã£ãã·ã¥ãããçµæãèŠã€ãããªãå Žåã颿°ãå®è¡ãããŸããçµæã¯çæããããã£ãã·ã¥ããŒã«é¢é£ä»ããããŠãã£ãã·ã¥ã«ä¿åããããã®åŸè¿ãããŸãã
å®è£ ã®è©³çްã¯ãç¹å®ã®ããŒãžã§ã³ãåºç€ãšãªããã£ãã·ã¥ã¡ã«ããºã ã«ãã£ãŠç°ãªãå ŽåããããŸããReactã¯ãããã®æ©èœãç¶ç¶çã«éçºããŠããŸããããããåé·ãªèšç®ãæå°éã«æãããã£ãã·ã¥ãéããŠã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžããããšããäžè¬ååã¯åãã§ãã
experimental_useCacheã®å®è£
ïŒå®è·µçãªäŸ
experimental_useCacheã®å®è·µçãªå¿çšãããã€ãã®äŸã§ç€ºããŸãããã
äŸ1ïŒAPIãªã¯ãšã¹ãã®ãã£ãã·ã¥
APIãããŠãŒã¶ãŒããŒã¿ãååŸããã³ã³ããŒãã³ããæ³åããŠã¿ãŠãã ããããã£ãã·ã¥ããªãå Žåãåã¬ã³ããŒãæ°ããAPIåŒã³åºããããªã¬ãŒããŸããexperimental_useCacheã¯ãããé²ãããšãã§ããŸãã
import { experimental_useCache } from 'react';
function fetchUserData(userId) {
// Simulate an API call
return new Promise((resolve) => {
setTimeout(() => {
const userData = { id: userId, name: `User ${userId}` };
resolve(userData);
}, 1000); // Simulate a 1-second network delay
});
}
function UserProfile({ userId }) {
const cachedFetchUserData = experimental_useCache(fetchUserData);
const userData = cachedFetchUserData(userId);
return (
{userData ? (
Name: {userData.name}
) : (
Loading...
)}
);
}
ãã®äŸã§ã¯ãcachedFetchUserDataã¯ã¡ã¢åããã颿°ã§ããåãuserIdã§ã®åŸç¶ã®åŒã³åºãã¯ã远å ã®APIãªã¯ãšã¹ããè¡ãããšãªãããã£ãã·ã¥ããããŠãŒã¶ãŒããŒã¿ãè¿ããŸãããã®äŸã§ã¯ãAPIåŒã³åºããã·ãã¥ã¬ãŒãããŠããŸããexperimental_useCacheã®äœ¿çšã¯ãç§ãã¡ã®APIåŒã³åºãã§ããå¥ã®é¢æ°ãåŒæ°ãšããŠåã颿°ã§ããããšã«æ³šæããŠãã ããã
äŸ2ïŒè€éãªèšç®ã®ãã£ãã·ã¥
èšç®ã³ã¹ãã®é«ãèšç®ãå®è¡ããã³ã³ããŒãã³ããèããŠã¿ãŸããããçµæããã£ãã·ã¥ããããšã§ãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
import { experimental_useCache } from 'react';
function performComplexCalculation(input) {
// Simulate an expensive calculation
let result = 0;
for (let i = 0; i < 100000000; i++) {
result += Math.sin(input * i);
}
return result;
}
function CalculationComponent({ input }) {
const cachedCalculation = experimental_useCache(performComplexCalculation);
const result = cachedCalculation(input);
return (
Input: {input}
Result: {result}
);
}
ããã§ã¯ãcachedCalculationãperformComplexCalculationã®çµæãã¡ã¢åããåãå
¥åå€ãæäŸãããå Žåã«ã³ã³ããŒãã³ãã®ããã©ãŒãã³ã¹ãæé©åããŸãã
äŸ3ïŒè€æ°ã®ãã©ã¡ãŒã¿ãæã€ãã£ãã·ã¥
experimental_useCacheããã¯ã¯ãè€æ°ã®å
¥åãã©ã¡ãŒã¿ãæã€é¢æ°ã广çã«åŠçã§ããŸãã
import { experimental_useCache } from 'react';
function fetchData(resource, options) {
// Simulate an API request
return new Promise((resolve) => {
setTimeout(() => {
const data = { resource: resource, options: options };
resolve(data);
}, 500); // Simulate a 0.5-second delay
});
}
function DataDisplay({ resource, options }) {
const cachedFetchData = experimental_useCache(fetchData);
const data = cachedFetchData(resource, options);
return (
{data ? (
Resource: {data.resource}
Options: {JSON.stringify(data.options)}
) : (
Loading...
)}
);
}
ãã®äŸã§ã¯ãcachedFetchData颿°ã¯resourceãšoptionsã®äž¡æ¹ã®ãã©ã¡ãŒã¿ã«åºã¥ããŠçµæããã£ãã·ã¥ããŸããããã¯ã®å
éšããžãã¯ã¯ã颿°ã«æäŸããããã¹ãŠã®ãã©ã¡ãŒã¿ãèæ
®ããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãšèæ ®äºé
experimental_useCacheã¯åŒ·åãªæ©èœãæäŸããŸãããéçºè
ã¯ãã®å©ç¹ãæå€§åããç¹ã«ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®æèã§æœåšçãªèœãšã穎ãé¿ããããã«ããã¹ããã©ã¯ãã£ã¹ã«åŸãã¹ãã§ãã
- ãã£ãã·ã¥å¯èœãªæäœãç¹å®ããïŒ ã¢ããªã±ãŒã·ã§ã³ãæ³šææ·±ãåæãããã£ãã·ã¥ã«é©ããæäœãç¹å®ããŸããããã«ã¯éåžžãAPIããã®ããŒã¿ååŸãè€éãªèšç®ããã®ä»ã®æéã®ãããããã»ã¹ãå«ãŸããŸãããã¹ãŠããã£ãã·ã¥ãã¹ãã§ã¯ãããŸãããã¡ã¢ãªäœ¿çšéãšããã©ãŒãã³ã¹ã®å©ç¹ã®éã®ãã¬ãŒããªããèããŠãã ããã
- ãã£ãã·ã¥ããŒãæ éã«å®çŸ©ããïŒ ãã£ãã·ã¥ããŒãäžæã§ãããå ¥åãã©ã¡ãŒã¿ã代衚ãããã®ã§ããããšã確èªããŸãã2ã€ã®ç°ãªã颿°åŒã³åºããç°ãªãçµæãçæãã¹ãå Žåããããã®2ã€ã®åŒã³åºãã¯ç°ãªãããŒãæã€ã¹ãã§ããããã¯æ£ããè¡ãããã®éèŠãªéšåã§ãããã©ã¡ãŒã¿ãšããŠè€éãªãªããžã§ã¯ãã䜿çšããŠããå Žåãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãšããã·ã¥åã¯é©åãªãã£ãã·ã¥ããŒãäœæããããã®éèŠãªã¹ãããã§ãã
- ãã£ãã·ã¥ã®ç¡å¹åãæ€èšããïŒ ãã£ãã·ã¥ãããããŒã¿ãå€ããªã£ãç¶æ³ã«å¯ŸåŠããããã«ããã£ãã·ã¥ç¡å¹åã®æŠç¥ãå®è£
ããŸããReactã¯
experimental_useCacheã«çµã¿èŸŒã¿ã®ãã£ãã·ã¥ç¡å¹åãæäŸããŠããŸããã - é©åãªãšã©ãŒãã³ããªã³ã°ãå®è£ ããïŒ ãã£ãã·ã¥ããã颿°ãé©åãªãšã©ãŒãã³ããªã³ã°ã§ã©ããããŠããããã¯ãŒã¯ãšã©ãŒããã®ä»ã®åé¡ãé©åã«ç®¡çããŸãã
- ãã£ãã·ã¥ã®ããã©ãŒãã³ã¹ãç£èŠããïŒ ãã£ãã·ã¥ãããçããã£ãã·ã¥ãã¹çããã£ãã·ã¥ã®ãµã€ãºãªã©ããã£ãã·ã¥ã¡ã«ããºã ã®ããã©ãŒãã³ã¹ã远跡ããŸããããã«ãããæ¹åã®äœå°ãããé åãç¹å®ãããã£ãã·ã¥æŠç¥ãæé©åã§ããŸããã°ããŒãã«ã¢ããªã®ããã©ãŒãã³ã¹ç£èŠããŒã«ã䜿çšããŠãç°ãªãå°ççãªå Žæããã®ããã©ãŒãã³ã¹ã芳å¯ããããšãæ€èšããŠãã ããã
- ããŒã¿ã®äžè²«æ§ãèããïŒ ãã£ãã·ã¥ã¯ããŒã¿ãå€ããªãå¯èœæ§ããããããŸããã¢ããªã±ãŒã·ã§ã³ã§èš±å®¹ã§ããå€ãã®ã¬ãã«ã決å®ãããã£ãã·ã¥ãšã³ããªã®æå¹æéïŒTTLïŒããã£ãã·ã¥ãããããŒã¿ãæŽæ°ããã¡ã«ããºã ãªã©ã®æŠç¥ãå®è£ ããŸãããã£ãã·ã¥æŠç¥ããŠãŒã¶ãŒã®ããŒã¿äžè²«æ§èŠä»¶ãšäžèŽããŠããããšã確èªããŠãã ããã
- ã°ããŒãã«ãªèæ
®äºé
ïŒ
- ãã±ãŒã·ã§ã³åºæã®ããŒã¿ïŒ ã¢ããªã±ãŒã·ã§ã³ããã±ãŒã·ã§ã³åºæã®ããŒã¿ãæäŸããå Žåããã£ãã·ã¥æŠç¥ããŠãŒã¶ãŒã®ãã±ãŒã·ã§ã³ãèæ ®ããŠããããšã確èªããŸãããŠãŒã¶ãŒã®å°åã«åºã¥ããŠç°ãªããã£ãã·ã¥ããã£ãã·ã¥ããŒã䜿çšããããšãæ€èšããŠãã ããã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒïŒ CDNãå©çšããŠãéçã¢ã»ããïŒäŸïŒç»åãJavaScriptãã¡ã€ã«ïŒãç°ãªãå°ççå°åã®ãŠãŒã¶ãŒã®è¿ãã«ãã£ãã·ã¥ããŸããããã«ãããèªã¿èŸŒã¿æéãå€§å¹ ã«æ¹åãããŸãã
- ãµãŒããŒãµã€ããã£ãã·ã¥ïŒ ãµãŒããŒãµã€ããã£ãã·ã¥ãå®è£ ããŠããªãªãžã³ãµãŒããŒãŸãã¯äžéãã£ãã·ã¥ïŒäŸïŒãªããŒã¹ãããã·ïŒã§ããŒã¿ããã£ãã·ã¥ããŸãã
é«åºŠãªãã¯ããã¯ãšæé©å
åºæ¬çãªå®è£
ãè¶
ããŠãããã€ãã®é«åºŠãªãã¯ããã¯ãexperimental_useCacheã®äœ¿çšãããã«æé©åããããšãã§ããŸãã
- ã«ã¹ã¿ã ãã£ãã·ã¥å®è£
ïŒ
experimental_useCacheã¯ããã©ã«ãã®ãã£ãã·ã¥ã¡ã«ããºã ãæäŸããŸããããããæ¡åŒµããããå°çšã®ãã£ãã·ã¥ãµãŒãã¹ãããŒã«ã«ã¹ãã¬ãŒãžããŒã¹ã®ãã£ãã·ã¥ã®ãããªãããæŽç·Žããããã£ãã·ã¥ãœãªã¥ãŒã·ã§ã³ãšçµ±åãããããããšãå¯èœã§ããçŸåšAPIã¯ãã£ãã·ã¥èšå®ã®æ¡åŒµãã€ã³ããæäŸããŠããŸããããReact.cacheãä»ã®ç¶æ 管çããŒã«ãšçµã¿åãããããšã§ãç¬èªã®ãã£ãã·ã¥ãå®è£ ããããšã¯ãã€ã§ãå¯èœã§ãã - ããŒã·ã£ã«ãã€ãã¬ãŒã·ã§ã³ïŒ ããŒã·ã£ã«ãã€ãã¬ãŒã·ã§ã³æè¡ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®äžéšãéžæçã«ã¯ã©ã€ã¢ã³ãåŽã§ãã€ãã¬ãŒãããããšãæ€èšããŸããããã«ãããèªã¿èŸŒã¿ã»å®è¡ãå¿ èŠãªJavaScriptã®éãæžããåæèªã¿èŸŒã¿æéãæ¹åãããŸãããã£ãã·ã¥ãããçµæã¯ããããã®ãã€ãã¬ãŒããããã³ã³ããŒãã³ãã«äŸçµŠãããèªã¿èŸŒã¿ãããã«æ¹åã§ããŸãã
- ã³ãŒãåå²ïŒ ã³ãŒãåå²ãå®è£ ããŠãã¢ããªã±ãŒã·ã§ã³ãããå°ããªãã£ã³ã¯ã«åå²ãããªã³ããã³ãã§ããŒããããããã«ããŸããããã«ãããåæã®JavaScriptãã€ããŒããæžå°ããã¢ããªã±ãŒã·ã§ã³ã®äœæããã©ãŒãã³ã¹ãåäžããŸããããã¯ãŸããã³ã³ããŒãã³ãã®ãµã€ãºãšãã£ãã·ã¥ã®åœ±é¿ã管çããã®ã«åœ¹ç«ã¡ãŸãã
- é å»¶èªã¿èŸŒã¿ïŒ ãŠãŒã¶ãŒã«ããã«ã¯èŠããªãç»åããã®ä»ã®ãªãœãŒã¹ã«å¯ŸããŠé å»¶èªã¿èŸŒã¿ãå®è£ ããŸããããã«ããããããã®ãªãœãŒã¹ã®èªã¿èŸŒã¿ãå¿ èŠã«ãªããŸã§é å»¶ãããåæèªã¿èŸŒã¿æéãæ¹åããŸãããããã®é å»¶èªã¿èŸŒã¿ã³ã³ããŒãã³ãã«äŸçµŠãããããŒã¿ããã£ãã·ã¥ããããšã¯ãèªã¿èŸŒã¿æéãæ¹åããããã®è³¢æãªéžæè¢ã§ãã
ä»ã®ãã£ãã·ã¥æŠç¥ãšã®æ¯èŒ
experimental_useCacheã¯Reactã¢ããªã±ãŒã·ã§ã³ã§ããŒã¿ããã£ãã·ã¥ããå¯äžã®æ¹æ³ã§ã¯ãããŸããããããžã§ã¯ãã«æé©ãªãã£ãã·ã¥æŠç¥ã«ã€ããŠæ
å ±ã«åºã¥ããæ±ºå®ãäžãããã«ã¯ãä»ã®äžè¬çãªã¢ãããŒããšã©ã®ããã«æ¯èŒãããããçè§£ããããšãäžå¯æ¬ ã§ãã
- React Contextãšç¶æ
管çã©ã€ãã©ãªïŒ ReduxãZustandãRecoilãªã©ã®ã©ã€ãã©ãªã¯ããã£ãã·ã¥ãããããŒã¿ãå«ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã管çã§ããŸãããããã¯ã¢ããªã±ãŒã·ã§ã³ããŒã¿ãäžå
åããã®ã«é©ããŠããŸããéãã¯ããããã¯éåžžãã°ããŒãã«ãªç¶æ
管çãœãªã¥ãŒã·ã§ã³ãæäŸãã
experimental_useCacheã¯ã³ã³ããŒãã³ãã¬ãã«ã®ãã£ãã·ã¥ã«çŠç¹ãåœãŠãŠããç¹ã§ããäž¡è ã¯äœµçšããããšãã§ããŸãã - ãã©ãŠã¶ãã£ãã·ã¥ïŒLocal StorageãSession StorageïŒïŒ ãã©ãŠã¶ã®ããŒã«ã«ã¹ãã¬ãŒãžãã»ãã·ã§ã³ã¹ãã¬ãŒãžã«ããŒã¿ãä¿åããããšã¯ãã»ãã·ã§ã³ããŸããã§ããŸãã¯ã»ãã·ã§ã³å
ã§æç¶ããå¿
èŠãããããŒã¿ããã£ãã·ã¥ããã®ã«é©ããŠããŸãããŠãŒã¶ãŒã®å¥œã¿ããã®ãŠãŒã¶ãŒã«ç¹æã®ä»ã®çš®é¡ã®æ
å ±ããã£ãã·ã¥ããã®ã«äŸ¿å©ã§ãã
experimental_useCacheã¯ãã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°äžã«å¿ èŠãªããŒã¿ããã£ãã·ã¥ããã®ã«ããé©ããŠããŸãã - ãµãŒããŒãµã€ããã£ãã·ã¥ïŒ ãµãŒããŒãµã€ããã£ãã·ã¥ïŒäŸïŒãªããŒã¹ãããã·ãRedisãMemcachedã䜿çšïŒãå®è£ ããããšã¯ããµãŒããŒã®è² è·ã軜æžããå¿çæéãæ¹åããããã«äžå¯æ¬ ã§ããããã¯ãåæã¬ã³ããŒæã«ãã£ãã·ã¥ãããããŒã¿ãæäŸããããšã«ãããã¯ã©ã€ã¢ã³ããµã€ããã£ãã·ã¥ãšé£æºããŠæ©èœããŸãã
useMemoãšuseCallbackã«ããã¡ã¢åïŒ ãããã®ããã¯ã¯ãããããå€ãšé¢æ°ãã¡ã¢åããããã«ç¹å¥ã«èšèšãããŠããŸããé«ã³ã¹ããªèšç®ãæé©åããããäžèŠãªåã¬ã³ããªã³ã°ãé²ãã ãããã®ã«åœ¹ç«ã¡ãŸããexperimental_useCacheã¯ãéåææäœã®çµæããã£ãã·ã¥ããããã«èšèšãããŠããŸãã
æé©ãªæŠç¥ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ã«äŸåããŸãããããã®ã¢ãããŒããçµã¿åãããŠäœ¿çšããããšãéžæãããããããŸããã
experimental_useCacheãšReactãã£ãã·ã³ã°ã®æªæ¥
Reactãé²åããã«ã€ããŠããã£ãã·ã¥åšãã®æ©èœã¯ããã«æçããããšãæåŸ
ãããŸããçŸåšå®éšçã§ã¯ãããŸãããexperimental_useCacheã¯Reactã®å°æ¥ã®ãã£ãã·ã¥æ©èœãžã®äžç«¯ãå£éèŠããŠãããŸãã
éçºã®äž»èŠãªé åã¯æ¬¡ã®ãšããã§ãã
- é«åºŠãªãã£ãã·ã¥ç®¡çïŒ ãã£ãã·ã¥ç¡å¹åæŠç¥ã®åŒ·åãæåŸ ãããéçºè ã¯ãã£ãã·ã¥ãããããŒã¿ã®ã©ã€ããµã€ã¯ã«ããã詳现ã«å¶åŸ¡ã§ããããã«ãªããŸãã
- ããŒã¿ååŸã©ã€ãã©ãªãšã®çµ±åïŒ ããŒã¿ååŸã©ã€ãã©ãªïŒäŸïŒRelayãApollo ClientïŒãšã®ã·ãŒã ã¬ã¹ãªçµ±åã®å¯èœæ§ããããã¢ããªã±ãŒã·ã§ã³å šäœã§ã®ããŒã¿ç®¡çãšãã£ãã·ã¥ãæ¹åãããŸãã
- éçºè äœéšã®åäžïŒ ç¹ã«è€éãªã¢ããªã±ãŒã·ã§ã³ã«ãããŠã䜿çšãç°¡çŽ åãããã£ãã·ã¥ã管çããããã®ããçŽæçãªæ¹æ³ãæäŸããããã«APIãããã«æŽç·ŽãããŸãã
- ãµãŒããŒã³ã³ããŒãã³ããšãã£ãã·ã¥ïŒ ãµãŒããŒã³ã³ããŒãã³ããšã®çµ±åã匷åããããµãŒããŒã¬ãã«ã§åŒ·åãªãã£ãã·ã¥æŠç¥ãå¯èœã«ããããã©ãŒãã³ã¹ãããã«åäžãããããšãã§ããŸãã
éçºè
ã¯ãexperimental_useCacheããã®ä»ã®ãã£ãã·ã¥æ©èœã®éçºãšé²åã«é¢ããææ°æ
å ±ã«ã€ããŠãReactã®ããã¥ã¡ã³ããã³ãã¥ããã£ã®è°è«ãç£èŠãã¹ãã§ããããã«ãããææ°ã®ãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹ã掻çšããŠããããšãä¿èšŒããŸãã
çµè«ïŒã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ããã®ãã£ãã·ã³ã°ã®æŽ»çš
experimental_useCacheã¯ãç¹ã«äžçäžã«åæ£ããŠãããŠãŒã¶ãŒã®ããã«ãReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããã®è²ŽéãªããŒã«ãæäŸããŸããããŒã¿ã广çã«ãã£ãã·ã¥ããããšã§ãéçºè
ã¯èªã¿èŸŒã¿æéã倧å¹
ã«ççž®ãããŠãŒã¶ãŒäœéšãåäžãããããå¿çæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã
ã°ããŒãã«ãªéçºè
ãšããŠãexperimental_useCacheã®äœ¿çšãå«ããã£ãã·ã¥æè¡ãçè§£ããæŽ»çšããããšã¯ãããŸããŸãªå°åãããã€ã¹ã®ãŠãŒã¶ãŒãåã°ããããšãã§ãã髿§èœãªWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã«æãéèŠã§ãããã®ã¬ã€ãã§èª¬æãããã¹ããã©ã¯ãã£ã¹ãããã©ãŒãã³ã¹ã®æé©åããã£ãã·ã¥æŠç¥ãæ
éã«æ€èšããããšã§ãã©ãã«ããŠããŠãŒã¶ãŒã«ã¹ã ãŒãºã§å¿çæ§ã®é«ãäœéšãæäŸããWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
Reactãšãã®ãã£ãã·ã¥æ©èœã®é²åã«æ³šç®ããäžçã¯ã©ã¹ã®Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ææ°æè¡ã«ã€ããŠåžžã«æ å ±ãåŸãŠãã ããã